/*
 * Copyright (C) 2013  Bob Rutledge
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 * and open the template in the editor.
 */
package org.lreqpcr.core.data_objects;

/**
 *
 * @author Bob Rutledge
 */
public class ExptDbInfo extends DatabaseInfo {

    private double ocf;//The average OCF derived from the corresponding Calibration database
    private boolean isTargetQuantityNormalizedToFmax;

    public ExptDbInfo() {
        super();
    }

    /**
     * This user-specified OCF used to determine target quantity over an entire
     * database. As such, only Runs using an identical reaction setup should be
     * imported into a Sample database. However, there is an option to set a
     * Run-specific OCF that allows inclusion of Runs with aberrant fluorescence
     * intensities or Runs generated by a different reaction setup. In practice,
     * this is a rare situation, and thus brings into question whether this
     * option should be available, particularly for novice users.
     *
     * @return OCF the optical calibration factor used to calculate the number
     * of target molecules
     */
    public double getOcf() {
        return ocf;
    }

    /**
     * This OCF value that is by default used to determine target quantity over
     * an entire database.
     *
     * @param ocf the optical calibration factor used to calculate the number of
     * target molecules
     */
    public void setOcf(double ocf) {
        this.ocf = ocf;
    }

    /**
     * Normalization to the Run's average Fmax corrects for well to well 
     * differences in optical calibration.
     * 
     * @return whether the target quantity is adjusted to the Run's average Fmax 
     */
    public boolean isTargetQuantityNormalizedToFmax() {
        return isTargetQuantityNormalizedToFmax;
    }

    /**
     * Normalization to the Run's average Fmax corrects for well to well 
     * differences in optical calibration.
     * 
     * @param isTargetQuantityNormalizedToFmax 
     */
    public void setIsTargetQuantityNormalizedToFmax(boolean isTargetQuantityNormalizedToFmax) {
        this.isTargetQuantityNormalizedToFmax = isTargetQuantityNormalizedToFmax;
    }
}
